package com.hundun.vision.biz.service;

import com.hundun.vision.biz.dto.PositionDTO;
import com.hundun.vision.biz.enums.OrderSide;
import com.hundun.vision.biz.enums.OrderType;
import com.hundun.vision.biz.enums.OrderValidityType;
import com.hundun.vision.biz.enums.OrderWorkingType;

import java.math.BigDecimal;

/**
 * @author ：RuoChen
 * @date ：14:15 2024/11/28
 * @description：账户服务
 */
public interface AccountService {
    /**
     * 获取服务器时间戳
     *
     * @return
     */
    Long getTimestamp();

    /**
     * 获取余额
     *
     * @param symbol 货币
     * @return 货币余额
     */
    BigDecimal getBalance(String symbol);

    /**
     * 获取持仓
     *
     * @param symbol 交易对
     * @return 持仓
     */
    PositionDTO getPosition(String symbol);

    /**
     * 变更杠杆
     * @param symbol
     * @param leverage
     * @return
     */
    Boolean changeLeverage(String symbol, Integer leverage);

    /**
     * 下单
     *
     * @param symbol            交易对
     * @param orderSide         订单方向
     * @param orderType         订单类型
     * @param orderValidityType 订单有效期类型
     * @param orderWorkingType  订单触发类型
     * @param price             价格
     * @param quantity          数量
     * @return
     */
    Boolean createOrder(String symbol, OrderSide orderSide, OrderType orderType, OrderValidityType orderValidityType,
                        OrderWorkingType orderWorkingType, BigDecimal price, BigDecimal quantity);

    /**
     * 是否挂单
     *
     * @param symbol
     * @return
     */
    Boolean openOrder(String symbol);

    /**
     * 取消所有订单
     *
     * @param symbol
     * @return
     */
    Boolean cancelAllOrders(String symbol);
}
